/**
 * @auther yangdong
 * @create 2020-05-05
 * 递归方法：一个方法体内调用它自身。
 * 方法递归包含了一种隐式的循环，它会重复执行某段代码，但这种重复执
 * 行无须循环控制。
 * 递归一定要向已知方向递归，否则这种递归就变成了无穷递归，类似于死
 * 循环。
 */
public class DiGui {
    //计算1-100之间所有自然数的和
    public static int sum(int num){
        if(num == 1){
            return 1;
        }else{
            return num + sum(num - 1);
        }
    }
    //：已知有一个数列：f(0) = 1,f(1) = 4,f(n+2)=2*f(n+1) + f(n),其中n是大于0,的整数，求f(10)的值。
    public static int f1(int n){
        if(n==0){
            return 1;
        }
        if(n==1){
            return 4;
        }
        return 2*f1(n-1)+f1(n-2);
    }
    public static int f2(int n){
        if(n==1){
            return 1;
        }

        return f2(n-1)+f2(n-2);
    }

    public static void main(String[] args) {
        int i=sum(100);
        System.out.println(i);
        System.out.println(f1(12));
    }
}
